#include <iostream>
#include <string>
#include <jsoncpp/json/json.h>
#include <fstream>

struct stu
{
    void print()
    {
        std::cout << "Debug:\nname: " << name << "age: " << age << "weight: " << weight << std::endl;
    }
    std::string name;
    int age;
    double weight;
};

int main()
{
    std::ifstream in("out.txt");
    if (!in.is_open())
        return 1;
    char buffer[1024];
    in.read(buffer, sizeof(buffer));
    in.close();

    std::string json_str = buffer; // 把文件中的字符串读到json_str中
    Json::Value root;              // 定义存放数据对象
    Json::Reader reader;           // 定义解析对象
    int res=reader.parse(json_str, root);  // 把json_str解析到root对象中
    (void)res;
    struct stu xm;
    xm.name = root["name"].asString(); // 从root对象中提取
    xm.age = root["age"].asInt();
    xm.weight = root["weight"].asDouble();

    xm.print();

    return 0;
}
// int main()
// {
//     struct stu xm = {"小明", 18, 75}; // 结构化数据
//     Json::Value root;                 // 定义存放数据对象
//     root["name"] = xm.name;           // 向对象中写入
//     root["age"] = xm.age;
//     root["weight"] = xm.weight;
//     // root["self"]=root;//对象中可以放自己

//     // Json::FastWriter writer; // 定义输出格式对象
//     Json::StyledWriter writer;
//     std::string str = writer.write(root); // write函数输出json格式字符串

//     //#include <fstream>
//     std::ofstream out("out.txt");
//     if (!out.is_open())
//     {
//         std::cout << str;
//         return 1;
//     }
//     out << str;
//     out.close();
//     return 0;
// }

// Json::StyledWriter writer;
